Communications network having a star topology are well known in the art. In such networks, a plurality of nodes are connected to a central hub which may, for example be provided as a switch, router, or a computer. In enterprise networks, the number of nodes can become very large. A disadvantage of this arrangement is that, because all of the network traffic is forced to traverse the hub, the routing capacity of the hub can become a limiting factor on the overall performance of the network.
In order to address this challenge, various methods have been proposed for compressing the data traffic prior to transmission through the network. Well known data compression techniques include Run-length encoding and Huffman encoding. In some cases, a Burrows-Wheeler transform is used to increase the compression efficiency of run-length encoding. All of these techniques utilize characteristics of the data traffic itself to determine the data compression.
The Burrows-Wheeler transform reversibly permutes the order of symbols (or characters) in a file in such a way that the transformed file contains symbol sequences in which the same symbol is repeated multiple times. While the Burrows-Wheeler transform does not itself reduce the size of the data file, the transformed file is more amenable to data compression using, for example, Run-Length Encoding.
Run-Length Encoding is a data-compression technique in which in which runs of symbols (that is, sequences in which the same symbol occurs multiple times in series) are stored as a single symbol value and a count, rather than as the original run of symbols. This technique is most useful on data that contains many such runs: for example, relatively simple graphic images such as icons, line drawings and animations. The Burrows-Wheeler transform tends to produce multiple symbol runs within the transformed data file, and so can be used to improve compression efficiency of Run-Length Encoding.
Huffman Encoding is an entropy encoding algorithm used for lossless data compression, in which a variable-length code table (or dictionary) is used for encoding each symbol of a source file. The dictionary is generated using the expected frequency of occurrence of each symbol in the source file. In some cases, the dictionary is generated by analysing the frequency of occurrence of symbols in the source file itself. In order to facilitate decoding of the Huffman encoded file, the dictionary is normally appended to the encoded file, which tends to reduce the compression efficiency.
Accordingly, techniques that enable efficient data compression in a network remain highly desirable.